package com.hex.ds.hdrs.engine.service;

import com.hex.ds.hdrs.center.service.CenterManager;
import com.hex.ds.hdrs.common.helper.ListHelper;
import com.hex.ds.hdrs.period.job.po.PeriodJob;
import com.hex.ds.hdrs.period.task.po.PeriodTask;
import com.hex.ds.hdrs.period.task.service.TaskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * @Package: com.hex.ds.hdrs.engine.service
 * @ClassName LstFinishService
 * @Description: 最新完成队列处理
 * @Author: jd.chen
 * @Date 2021/7/5 18:33
 * @Version v1.0
 **/
@Slf4j
@Service
public class LstFinishService {

    @Autowired
    private CenterManager centerManager;
    @Autowired
    private TaskService taskService;

    /**
     * @Method: isCanDeal
     * @Param: []
     * @Return: boolean
     * @Description： 中心是否可处理
     * @Author： jd.chen
     * @Date： 2021/7/5 18:15
     * @Version： V1.0
     */
    public boolean isCanDeal() {
        return centerManager.isCanDeal();
    }

    /**
     * @Method: qryLstFnsJobListMap
     * @Param: []
     * @Return: java.util.Map<java.lang.String,com.hex.ds.hdrs.period.job.po.PeriodJob>
     * @Description： 获取jobMap
     * @Author： jd.chen
     * @Date： 2021/7/5 18:23
     * @Version： V1.0
     */
    public Map<String, PeriodJob> qryLstFnsJobListMap(){
        List<PeriodJob> jobList = this.taskService.qryLstFnsJobList();
        return ListHelper.jobListToJobMap(jobList);
    }

    /**
     * @Method: qryLstFnsTaskListMap
     * @Param: []
     * @Return: java.util.Map<java.lang.String,com.hex.ds.hdrs.period.task.po.PeriodTask>
     * @Description： 获取taskMap
     * @Author： jd.chen
     * @Date： 2021/7/5 18:23
     * @Version： V1.0
     */
    public Map<String, PeriodTask> qryLstFnsTaskListMap(){
        List<PeriodTask> taskList = this.taskService.qryLstFnsTaskList();
        return ListHelper.taskListToTaskMap(taskList);
    }

    /**
     * @Method: getAllJobMap
     * @Param: []
     * @Return: java.util.Map<java.lang.String,com.hex.ds.hdrs.period.job.po.PeriodJob>
     * @Description： 获取全量作业map
     * @Author： jd.chen
     * @Date： 2021/7/5 18:26
     * @Version： V1.0
     */
    public Map<String, PeriodJob> getAllJobMap() {
        log.info("获取增量作业map【LatestFinishService.getAddJobMap】开始=======》");
        //1. 查询作业
        List<PeriodJob> jobList = this.taskService.qryLstFnsJobList();
        //2. list 转 map
        Map<String, PeriodJob> jobMap = ListHelper.jobListToJobMap(jobList);
        return jobMap;
    }

    /**
     * @Method: getAllTaskMap
     * @Param: []
     * @Return: java.util.Map<java.lang.String,com.hex.ds.hdrs.period.task.po.PeriodTask>
     * @Description： 获取全量任务map
     * @Author： jd.chen
     * @Date： 2021/7/5 18:32
     * @Version： V1.0
     */
    public Map<String, PeriodTask> getAllTaskMap() {
        log.info("获取增量任务map【LatestFinishService.getAddTaskMap】开始=======》");
        //1. 查询任务
        List<PeriodTask> taskList = this.taskService.qryLstFnsTaskList();
        //2. list 转 map
        Map<String, PeriodTask> taskMap = ListHelper.taskListToTaskMap(taskList);
        return taskMap;
    }

    /**
     * @Method: getAddJobList
     * @Param: [lastQryTs]
     * @Return: java.util.List<com.hex.ds.hdrs.period.job.po.PeriodJob>
     * @Description： 获取增量作业map
     * @Author： jd.chen
     * @Date： 2021/7/5 18:32
     * @Version： V1.0
     */
    public List<PeriodJob> getAddJobList(String lastQryTs) {
        log.debug("获取增量作业map【LatestFinishService.getAddJobList】开始=======》");
        //1. 查询作业
        return this.taskService.qryLstFnsJobList(lastQryTs);
    }

   /**
    * @Method: getAddTaskList
    * @Param: [lastQryTs]
    * @Return: java.util.List<com.hex.ds.hdrs.period.task.po.PeriodTask>
    * @Description： 获取增量任务map
    * @Author： jd.chen
    * @Date： 2021/7/5 18:32
    * @Version： V1.0
    */
    public List<PeriodTask> getAddTaskList(String lastQryTs) {
        log.debug("获取增量任务map【LatestFinishService.getAddTaskList】开始=======》");
        //1. 查询任务
        return this.taskService.qryLstFnsTaskList(lastQryTs);
    }
}
